// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import Vuex from 'vuex'

import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import store from './vuex/store'


Vue.use(ElementUI)
Vue.config.productionTip = false
Vue.use(Vuex)


import MenuUtils from "./util/rotlist";
let data = JSON.parse(window.sessionStorage.getItem('menus'))
if (data){
  //这里是防止用户手动刷新页面，整个app要重新加载,动态新增的路由，会消失，所以我们重新add一次
  let routes = []
  MenuUtils(routes,data)
  router.addRoutes(routes)
  // window.sessionStorage.removeItem('isLoadNodes')
}

router.beforeEach((to, from, next) => { 

  // let data = JSON.parse(window.sessionStorage.getItem('menus'))
  // console.log(data)
  // if(data&&router.path === '/login'){
  //   //这里不使用router进行跳转，是因为，跳转到登录页面的时候，是需要重新登录，获取数据的，这个时候，会再次向router实例里面add路由规则，
  //   //而next()跳转过去之后，没有刷新页面，之前的规则还是存在的，但是使用location的话，可以刷新页面，当刷新页面的时候，整个app会重新加载
  //   //而我们在刷新之前已经把sessionStorage里的user移除了，所以上面的添加路由也不行执行
  //   window.sessionStorage.removeItem('menus')
  //   // window.sessionStorage.removeItem('isLoadNodes')
  //   window.location.href = '/'
    
  // }
  if (to.meta.role) {  // 判断该路由是否需要登录权限
     if (store.state.token) {  // 通过vuex state获取当前的token是否存在
          next();
      }else {
        ///console.log(to.fullPath)
          next({
              path: '/logn',
              query: {redirect: to.fullPath}  // 将跳转的路由path作为参数，登录成功后跳转到该路由
          })
     }
      
  }
  else {
    next();
  }
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: { App }
})
